'''
有效的括号：
使用栈的方式，左括号压入，遇到右括号时，弹出，是否匹配，不匹配就报错。
'''
def isValid(s: str) -> bool:
    stack = []
    mapping = {")": "(", "}": "{", "]": "["}
    
    for char in s:
        if char in mapping:
            # 如果栈不为空就弹出
            top_element = stack.pop() if stack else '#'
            # 对比弹出的左括号是否一致。
            if mapping[char] != top_element:
                return False
        else:
            # 是左括号
            stack.append(char)
    
    # 如果栈为空，说明所有括号都正确匹配，字符串有效；否则，字符串无效。
    return not stack

def test_isValid():
    # 测试示例 1
    assert isValid("()") == True, "测试示例 1 失败"
    
    # 测试示例 2
    assert isValid("()[]{}") == True, "测试示例 2 失败"
    
    # 测试示例 3
    assert isValid("(]") == False, "测试示例 3 失败"
    
    # 测试示例 4
    assert isValid("([)]") == False, "测试示例 4 失败"
    
    # 测试示例 5: 空字符串
    assert isValid("") == True, "测试示例 5 失败"
    
    # 测试示例 6: 只有左括号
    assert isValid("({[") == False, "测试示例 6 失败"
    
    # 测试示例 7: 只有右括号
    assert isValid(")}]") == False, "测试示例 7 失败"
    
    # 测试示例 8: 复杂但有效的字符串
    assert isValid("{[]}") == True, "测试示例 8 失败"
    
    print("所有测试用例通过！")

# 运行测试
test_isValid()